<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    function isObjectTrulyEmpty(obj) {
        // 检查自身属性
        for (let key in obj) {
            if (obj.hasOwnProperty(key)) {
                return false;
            }
        }
        
        // 检查原型链上的自定义属性
        let proto = Object.getPrototypeOf(obj);
        while (proto && proto !== Object.prototype) {
            // Object.getOwnPropertyNames() 是 JavaScript 提供的一个用于获取对象自身所有属性名的方法，包括：
            // ✅ 可枚举的属性
            // ✅ 不可枚举的属性（这点区别于 Object.keys()）
            if (Object.getOwnPropertyNames(proto).length > 0) {
                return false;
            }
            proto = Object.getPrototypeOf(proto);
        }
        
        return true;
    }
</script>
</html>